home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / akcl / akcl1615.lha / h / s3000.h < prev    next >
C/C++ Source or Header  |  1988-09-12  |  2KB  |  57 lines

  1. #include "att.h"
  2. #define S3000
  3.  
  4.  
  5. #define ADDITIONAL_FEATURES \
  6.   ADD_FEATURE("S3000");\
  7.   ADD_FEATURE("SYSTEM-V")
  8.  
  9.  
  10.  
  11.  
  12. #undef READ_HEADER
  13. #define READ_HEADER \
  14.     fread(&fileheader, sizeof(fileheader), 1, original); \
  15.     fread(&header, sizeof(header), 1, original); \
  16.     data_begin = (char *)header.data_start; \
  17.     data_end = core_end; \
  18.     original_data = header.a_data; \
  19.     header.a_data = data_end - data_begin; \
  20.     diff = header.a_data - original_data; \
  21.     header.a_bss = sbrk(0) - core_end; \
  22.     fileheader.f_symptr += diff; \
  23.     fwrite(&fileheader, sizeof(fileheader), 1, save);\
  24.     fwrite(&header, sizeof(header), 1, save); \
  25.     fread(§ionheader, sizeof(sectionheader), 1, original); \
  26.     if (sectionheader.s_lnnoptr) \
  27.         sectionheader.s_lnnoptr += diff; \
  28.     fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  29.     fread(§ionheader, sizeof(sectionheader), 1, original); \
  30.     sectionheader.s_size += diff; \
  31.     if (sectionheader.s_lnnoptr) \
  32.         sectionheader.s_lnnoptr += diff; \
  33.     fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  34.     fread(§ionheader, sizeof(sectionheader), 1, original); \
  35.     sectionheader.s_paddr += diff; \
  36.     sectionheader.s_vaddr += diff; \
  37.     sectionheader.s_size = header.a_bss; \
  38.  /*  S3000 needs this ! */ \
  39.         if (sectionheader.s_scnptr) \
  40.                 sectionheader.s_scnptr += diff; \
  41.  /* end s3000 */ \
  42.     if (sectionheader.s_lnnoptr) \
  43.         sectionheader.s_lnnoptr += diff; \
  44.     fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  45.     for (n = 4;  n <= fileheader.f_nscns;  n++) { \
  46.         fread(§ionheader, sizeof(sectionheader), 1, original); \
  47.         if (sectionheader.s_scnptr) \
  48.             sectionheader.s_scnptr += diff; \
  49.         if (sectionheader.s_lnnoptr) \
  50.             sectionheader.s_lnnoptr += diff; \
  51.         fwrite(§ionheader, sizeof(sectionheader), 1, save); \
  52.     } \
  53.     filecpy(save, original, header.a_text);
  54.  
  55.  
  56.   
  57.